Computing devices can communicate with one another using either synchronous or asynchronous communication. With synchronous communication, a sender of a message waits for a receiver to receive and respond to the message before sending other messages. In some cases, the sender is blocked from performing other processing until the receiver responds to the message. With asynchronous communication, the sender may not need to wait for a response from the receiver before sending other messages or performing other processing. Asynchronous communication allows for the receiver to receive and process the message at a time chosen by the receiver.